home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
COMAL
/
Z-Misc Series
/
(k)zl.d64
/
lst.dem'heapsort
< prev
next >
Wrap
Text File
|
2007-03-01
|
1KB
|
65 lines
1000 //
1010 //
1020 //
1030 // HEAPSORT - A FAST ROUTINE FOR SORTING REAL NUMBERS
1040 //
1050 //
1060 //
1070 //
1080 //
1090 ╨╥╧├ HEAP'SORT(╥┼╞ IN'DATA(),NUM'VALUES) ├╠╧╙┼─
1100 FIRST:=╔╬╘((.5*NUM'VALUES)+1)
1110 FINISH:=NUM'VALUES
1120 ╥┼╨┼┴╘
1130 ╔╞ FIRST>1 ╘╚┼╬
1140 FIRST:=FIRST-1
1150 TEMP:=IN'DATA(FIRST)
1160 ┼╠╔╞ FIRST=1 ╘╚┼╬
1170 TEMP:=IN'DATA(FINISH)
1180 IN'DATA(FINISH):=IN'DATA(1)
1190 FINISH:=FINISH-1
1200 ┼╬─╔╞
1210 ╔╞ FINISH<>1 ╘╚┼╬
1220 J:=FIRST
1230 ╥┼╨┼┴╘
1240 I:=J
1250 J:=2*J
1260 ╔╞ J<FINISH ┴╬─ ╘╚┼╬ IN'DATA(J)<IN'DATA(J+1) ╘╚┼╬
1270 J:=J+1
1280 ┼╬─╔╞
1290 MULTI'EXIT:=╞┴╠╙┼
1300 ╔╞ J>FINISH ╘╚┼╬
1310 MULTI'EXIT:=╘╥╒┼
1320 ┼╠╔╞ TEMP>=IN'DATA(J) ╘╚┼╬
1330 MULTI'EXIT:=╘╥╒┼
1340 ┼╬─╔╞
1350 ╔╞ ╬╧╘ MULTI'EXIT ╘╚┼╬ IN'DATA(I):=IN'DATA(J)
1360 ╒╬╘╔╠ MULTI'EXIT
1370 IN'DATA(I):=TEMP
1380 ┼╠╙┼
1390 // FINISH = 1
1400 IN'DATA(1):=TEMP
1410 ┼╬─╔╞
1420 ╒╬╘╔╠ FINISH=1
1430 ┼╬─╨╥╧├ HEAP'SORT
1440 //
1450 //
1460 //
1470 //
1480 //
1490 // DEMONSTRATION DATA SET
1500 //
1510 //
1520 //
1530 //
1540 //
1550 ─╔═ A(200)
1560 ╞╧╥ I:=1 ╘╧ 200 ─╧
1570 A(I):=╥╬─(1,1000)
1580 ┼╬─╞╧╥ I
1590 HEAP'SORT(A(),200)
1600 ╞╧╥ I:=1 ╘╧ 200 ─╧
1610 ╨╥╔╬╘ A(I)
1620 ┼╬─╞╧╥ I
1630 ┼╬─